﻿using System;
using System.Collections.Generic;
using System.Data.Entity.Infrastructure;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using DAO.Repositories;

namespace DAO
{
    public class ServerObjectsRepository : BaseRepository<DeployObject>
    {
        DeployAppEntities _dbModel;
        public ServerObjectsRepository(DeployAppEntities dbModel) : base(dbModel)
        {
            _dbModel = dbModel;
        }

        public void SetIsDelete(int id)
        {
            var depObj = _dbModel.DeployObjects.FirstOrDefault(t => t.id == id);
            if (depObj == null)
                throw new InvalidOperationException("При удалении объекта произошла ошибка. Не компонент сервера с таким идентификатором.");
            depObj.IsDelete = 1;
        }

        public void AddCustomizationToDeployObject(Customization custObj, int idDeployObj)
        {
            if (custObj == null)
                throw new ArgumentNullException("custObj");
            var depObj = _dbModel.DeployObjects.FirstOrDefault(t => t.id == idDeployObj);
            if (depObj == null)
                throw new InvalidOperationException("Произошла ошибка при добавлении объекта кастомизации к объекту развертывания. Не найне объект с таким идентификатором.");
            custObj.DeployObjects.Add(depObj);
        }

        public IEnumerable<DeployObject> GetAllNotDeleted()
        {
            return _dbModel.DeployObjects.Where(t => t.IsDelete == 0).AsEnumerable<DeployObject>();
        }

        public IEnumerable<DeployObject> GetByServerIdNotDeleted(int idServer)
        {
            return _dbModel.DeployObjects.Where(t => t.IdServer == idServer && t.IsDelete == 0);
        }

    }
}
